While computers are still used for their traditional processing purposes, advances in communication infrastructures and protocols have turned standard computing devices into valuable communication tools. Computers communicate with each other, and with other electronic devices, over networks ranging from local area networks (LANs) to wide reaching global area networks (GANs) such as the Internet. Other electronic devices have experienced similar transformations, such as mobile phones, personal digital assistants (PDAs), and the like. Today, these wireless devices are being used for a variety of different types of communication. For example, while the analog mobile phone was traditionally used for analog voice communications, the mobile phone of the present and future is a powerful communication tool capable of communicating voice, data, images, video, and other multimedia content. PDAs, once the portable calendaring and organizational tool, now often include network communication capabilities such as e-mail, Internet access, etc. With the integration of wireless and landline network infrastructures, information of all sorts can be conveniently communicated between wireless and landline terminals.
In carrying out such communications between devices, the programs, applications, application instances, and the like (hereinafter “applications”) operable on such devices often need to communicate with applications on other devices. For example, an application at the application layer may generate messages that are communicated to lower levels of the software architecture including, e.g., the transport layer, network layer, data link layer, and physical layer, where the encapsulated messages are transmitted over the network to other devices. Messages received at the receiving device move up the software architecture to ultimately provide the original message to an application on the receiving device.
To facilitate the communication of messages, message queues may be used. Generally, a message queue relates to the functionality that receives messages from an application and forwards them to a recipient application. The message queue serves as a temporary storage facility for traveling messages. Such message queues generally reside in the devices that are sending and receiving the messages, and alternatively may reside in an intermediary computing system on the network logically positioned between the sending and receiving devices.
The use of message queues removes many aspects of the message communication from the applications themselves. A message queue stores messages, such as when there is no connectivity between the communicating applications. Another benefit is the reliability, as the use of message queues provides safe and orderly delivery of messages. Thus, one benefit of utilizing message queues is that is obviates the need for application developers to develop, or even fully understand, the underlying functionality for performing these orderly transfers of messages to and from their applications.
Existing message queues buffer information in a first-in, first-out fashion. To date, the public Internet has been working on a “best effort” principle, meaning that there is no Quality of Service (QoS) available. The Internet Protocol (IP) network will thus make its best effort to deliver the data, but no guarantees are given. Existing message queues that operate in a first-in, first-out fashion also operate under a “best effort” paradigm, and therefore are appropriate for such a best effort network QoS.
However, different QoS methodologies are currently being developed for landline networks such as the Internet. For example, the Internet Engineering Task Force's (IETF's) standardization of the Differentiated Services (DiffServ) framework allows priority-based QoS mechanisms to be supported in IP routers. Another example is IETF's standardized Integrated Services (IntServ) framework. In addition to the IP protocol, cellular protocols are now starting to support QoS. Such frameworks will provide for varying QoS to content consumers.
It would be desirable that the use of such QoS methodologies provide “end-to-end” QoS between the applications and/or application instances associated with message transactions. Message queues, while otherwise providing benefits, may ultimately present a bottleneck to such end-to-end QoS. Because the QoS is limited by the weakest QoS link in the transfer, the “best effort” message queues render wireless and landline network QoS methodologies ineffectual. The present invention provides a solution to these and other problems of the prior art, and provides many advantages over prior art message transactions implementing message queues.